$(function() {
	//	创建moudle的UE
	$('.creat').Module();

	/**
	 * 保存按钮的实现，通过遍历所有UE组装json来实现数据传递
	 */
	$('#but,#modelSumbit').click(function(e) {

		//创建roles数组
		var roles = new Array();

		//创建actor对象
		var actor = {};
		//从url中获取id的值
		actor['name'] = $('#input_actor').val();
		actor['id'] =$('#id').val();
			//window.location.pathname.split('/')[window.location.pathname.split('/').length - 1];
		//循环界面找相应的值填充
		$(".row.check_ground").each(
			function(index) {
				//	最外层循环是构建role，一个模块对应着一个role 多个role构成了actor
				var $strong = $(this).find("strong");

				//	构建module对象
				var module = {};
				module["name"] = $strong.text();
				module["parentId"] = $strong.attr("parentid");
				module["url"] = $strong.attr("url");
				module["id"] = $strong.attr("moduleid");

				//	构建role对象
				$(this).find("input:checkbox").each(
					function(index) {
						if(true == $(this).is(
								':checked')) { //	判定一下哪个是选中
							var role = {};
							//	构建role
							role['actor'] = actor;
							role['c'] = $(this).attr(
								"tag");
							role['module'] = module;
							role['name'] = actor.name + '_' + module.name;
							roles.push(role); //选中后直接添加到roles中，构建完毕
						}
					})
			});

		//提交数据到controller中去
		$.ajax({
			method: 'POST',
			url: 'role/AjaxForRoles',
			contentType: 'application/json',
			data: JSON.stringify(roles)
		}).done(function(data) {
			$(".alert").hide();
			$(".alert").slideDown('slow');
			$(".alert").fadeOut(3000);
			
		}).fail(function(error) {
			//console.log(error);
			$(".alert strong").text("提交失败，错误代码为："+error.readyState);
			$(".alert").removeClass("alert-success");
			$(".alert").addClass("alert-danger");
			$(".alert").hide();
			$(".alert").slideDown('slow');
			$(".alert").fadeOut(3000);
			console.log(error);
		});

	})
});

(function($) {
	// 以一个mast为单元进行创建

	// 第一层封装

	$.fn.Module = function() {
		obj = $(this);
		obj.empty();
		//内部定义参数
		options = {
			mastModule: 'role/ajaxForModuleMast'	//	请求的最高级别模块
//			module: 'ajaxForModuleAll',				//	好像没什么用
//			name: $(this).attr('url')				//	好像没什么用
		};

		//构建调用
		ModulePanel.Create(options);
	};

	//ue界面的自动构建
	ModulePanel = {

		// 外部组装以及数据呈现
		Create: function(opts) {

			// 获取最高模块
			$.ajax({
				url: 'role/ajaxForModuleMast',
				type: 'POST',
				dataType: 'json'
			}).done(function(results) {
				//console.log(results); @
				$.each(results, function(number, result) { // 第一层循环
					//console.log(typeof(results));
					// 构建panel的参数
					var panel_opts = {
						name: result.moduleName,
						id: result.id,
						parentObj: obj, // 父控件
						childData: result.modules //  子控件的数据
					}
					// 	创建icheck控件
					ModulePanel.Create_Panel(panel_opts);
				});

			}).done(function(results) {
				/**
				 * 根据请求的id，查找相应的权限，并对UE进行赋值，嵌套ajax，非常不建议这么用
				 */
				$.ajax({
					url: 'role/ajaxForRole',
					type: 'POST',
					dataType: 'json',
					data: {
						actor_id: $('#id').val()
					},
					success: function(results) {
						//console.log(results);
						$.each(results, function(index, result) { //	找到相对应的icheck，修改状态
							$('#input_' + result.module.id + result.c).iCheck('check');
						})
					}
				})
			}).fail(function(err) {
				console.log(err);
			})

		},

		// 内部组织
		Create_Panel: function(opts) {
			var opts = $.extend(true, {
				id: 'panel',
				name: 'panelName',
				parentObj: $(this),
				childData: null
			}, opts);

			// 定义最外层的div
			var _panel = $('<div>', {
				"class": "panel panel-primary",
				'id': 'panel_' + opts.id,
				'name': opts.name
			});
			// 定义头
			var _panel_head = $('<div>', {
				"class": "panel-heading"
			}).text(opts.name).appendTo(_panel);
			// 定义内容div
			var panel_body = $('<div>', {
				"class": "panel-body check_ground"
			}).appendTo(_panel);
			//定义每一个模块内容
			$.each(opts.childData, function(name, module) {

				// 定义每一行div
				var div_row = $('<div>', {
					"class": "row  check_ground col-md-6"
				}).appendTo(panel_body);
				// 定义strong
				var strong = $('<strong>', {
					"parentId": module.parentId,
					"moduleId": module.id,
					"url": module.url,
					'class':'rinput_strong'
				}).text(module.name).appendTo(div_row);
				// 定义ul
				var ul = $('<ul>', {'class':'rinput_ul'}).appendTo(div_row);
				// 定义li
				var li = $('<li>', {}).appendTo(ul);

				var input_R = $('<input>', {
					"type": "checkbox",
					"id": "input_" + module.id + "R",
					"tag": "R"
				}).appendTo(li);
				$(input_R).iCheck({
					checkboxClass: 'icheckbox_square-blue',
					radioClass: 'iradio_square-blue',
					increaseArea: '20%'
				});

				var label_R = $('<label>', {
					"for": input_R.id
				}).text("只读").appendTo(li);
				// 
				var li = $('<li>', {}).appendTo(ul);

				var input_M = $('<input>', {
					"type": "checkbox",
					"id": "input_" + module.id + "M",
					"tag": "M"
				}).appendTo(li);
				$(input_M).iCheck({
					checkboxClass: 'icheckbox_square-blue',
					radioClass: 'iradio_square-blue',
					increaseArea: '20%'
				});

				var label_M = $('<label>', {
					"for": input_M.id
				}).text("修改").appendTo(li);

			})
			opts.parentObj.append(_panel);

		}
	}

})(jQuery)